XML Transformation Language
   HOME

TheInfoList



OR:

An XML transformation language is a
programming language A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
designed specifically to transform an ''input''
XML Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing data. It defines a set of rules for encoding electronic document, documents in a format that is both human-readable and Machine-r ...
document into an ''output'' document which satisfies some specific goal. There are two special cases of transformation: * XML to XML: the ''output document'' is an XML document. * XML to Data: the ''output document'' is a
byte stream A bitstream (or bit stream), also known as binary sequence, is a sequence of bits. A bytestream is a sequence of bytes. Typically, each byte is an Octet (computing), 8-bit quantity, and so the term octet stream is sometimes used interchangeab ...
.


XML to XML

As XML to XML transformation outputs an XML document, XML to XML transformation chains form XML pipelines.


XML to Data

The XML (EXtensible Markup Language) to Data transformation contains some important cases. The most notable one is XML to HTML (HyperText Markup Language), as an
HTML Hypertext Markup Language (HTML) is the standard markup language for documents designed to be displayed in a web browser. It defines the content and structure of web content. It is often assisted by technologies such as Cascading Style Sheets ( ...
document ''is not'' an XML document.


SGML origins

The earliest transformation languages predate the advent of XML as an SGML profile, and thus accept input in arbitrary
SGML The Standard Generalized Markup Language (SGML; International Organization for Standardization, ISO 8879:1986) is a standard for defining generalized markup languages for documents. ISO 8879 Annex A.1 states that generalized markup is "based on t ...
rather than specifically XML. These include the SGML-to-SGML link process definition (LPD) format defined as part of the SGML standard itself; in SGML (but not XML), the LPD file can be referenced from the document itself by a declaration, similarly to the declaration used for a DTD. Other such transformation languages, addressing some of the deficiencies of LPDs, include Document Style Semantics and Specification Language (DSSSL) and OmniMark. Newer transformation languages tend to target XML specifically, and thus only accept XML, not arbitrary SGML.


Existing languages

* XSLT:
XSLT XSLT (Extensible Stylesheet Language Transformations) is a language originally designed for transforming XML documents into other XML documents, or other formats such as HTML for web pages, plain text, or XSL Formatting Objects. These formats c ...
is the best known XML transformation language. The XSLT 1.0 W3C recommendation was published in 1999 together with
XPath XPath (XML Path Language) is an expression language designed to support the query or transformation of XML documents. It was defined by the World Wide Web Consortium (W3C) in 1999, and can be used to compute values (e.g., strings, numbers, or ...
1.0, and it has been widely implemented since then. XSLT 2.0 has become a W3C recommendation since January 2007 and implementations of the specification like Saxon 8 are already available. * XQuery:
XQuery XQuery (XML Query) is a query language and functional programming language designed to query and transform collections of structured and unstructured data, primarily in the form of XML. It also supports text data and, through implementation-sp ...
is a full functional language, despite having "query" in the name. It is a ''de facto'' standard used by Microsoft, Oracle, DB2, MarkLogic, etc., is the foundation for the XRX web programming model, and has a W3C recommendation for versions 1.0. XQuery is not written in XML itself like XSLT is, so its syntax is much lighter. The language is based on XPath 2.0. XQuery programs cannot have
side-effects In medicine, a side effect is an effect of the use of a medicinal drug or other treatment, usually adverse but sometimes beneficial, that is unintended. Herbal and traditional medicines also have side effects. A drug or procedure usually used ...
, just like XSLT and provides almost the same capabilities (for instance: declaring variables and functions, iterating over sequences, using W3C schema types), even though the program syntax are quite different. XQuery is logic driven, using FOR, WHERE and function composition (e.g. fn:concat("", generate-body(), "")). In contrast, XSLT is data-driven (push processing model) where certain conditions of the input document trigger the execution of templates rather than the code executing in the order in which it is written. * XProc: XProc is an XML Pipeline language. The XProc 1.0 W3C Recommendation was published in May 2010. * XML document transform: Is a Microsoft standard for performing simple transforms on XML documents. Primarily for creating IIS Web.config files (Config Transforms), other implementations allow it to be used for generic config files as build time (Slow Cheetah) or from the command line (CTT). * STX: STX (Streaming Transformations for XML) is inspired by XSLT but has been designed to allow a one-pass transformation process that never prevents streaming. Implementations are available in Java
Joost
and Perl
XML::STX
. * XML Script: XML Script is an imperative scripting language inspired by
Perl Perl is a high-level, general-purpose, interpreted, dynamic programming language. Though Perl is not officially an acronym, there are various backronyms in use, including "Practical Extraction and Reporting Language". Perl was developed ...
that uses the XML syntax. XML Script supports
XPath XPath (XML Path Language) is an expression language designed to support the query or transformation of XML documents. It was defined by the World Wide Web Consortium (W3C) in 1999, and can be used to compute values (e.g., strings, numbers, or ...
and its proprietary DSLPath for selecting nodes from the input tree. * FXT: FXT is a functional XML transformation tool, implemented in
Standard ML Standard ML (SML) is a General-purpose programming language, general-purpose, High-level programming language, high-level, Modular programming, modular, Functional programming, functional programming language with compile-time type checking and t ...
. * XDuce: XDuce is a typed language with a lightweight syntax, compared to XSLT. It is written in ML. * CDuce: CDuce extends XDuce to a general-purpose
functional programming language In computer science, functional programming is a programming paradigm where programs are constructed by applying and composing functions. It is a declarative programming paradigm in which function definitions are trees of expressions that map ...
, se
CDuce homepage
* XACT: XACT is a Java-based system for programming XML transformations. Notable features include XML templates as immutable values and a static analysis to ensure type safety using XML Schema types
XACT home page
. * XFun: XFun is a functional language X-Fun for defining transformations between XML data trees, while providing shredding instructions. X-Fun can be understood as an extension of Frisch's XStream language with output shredding, while pattern matching is replaced by tree navigation with XPath expressions.

* XStream: XStream is a simple functional transformation language for XML documents based on CAML. XML transformations written in XStream are evaluated in streaming: when possible, parts of the output are computed and produced while the input document is still being parsed. Some transformations can thus be applied to huge XML documents which would not even fit in memory. The XStream compiler is distributed under the terms of the
CeCILL CeCILL (from CEA CNRS INRIA Logiciel Libre) is a free software license adapted to both international and French legal matters, in the spirit of and retaining compatibility with the GNU General Public License (GPL). It was jointly developed by ...
free software license A free-software license is a notice that grants the recipient of a piece of software extensive rights to modify and redistribute that software. These actions are usually prohibited by copyright law, but the rights-holder (usually the author) ...
. * Xtatic: Xtatic applies methods from XDuce to C#, se
Xtatic homepage
* HaXml: HaXml is a library and collection of tools to write XML transformations in
Haskell Haskell () is a general-purpose, statically typed, purely functional programming language with type inference and lazy evaluation. Designed for teaching, research, and industrial applications, Haskell pioneered several programming language ...
. Also se
this paper about HaXml published in 1999
an

See also the more recen
HXML
and Haskell XML Toolbox
HXT
, which is based on the ideas of HaXml and HXML but takes a more general approach to XML processing. * XMLambda: XMLambda (XMλ) is described in a 1999 paper by Erik Meijer and Mark Shields. No implementation is available. Se
XMLambda home page
* FleXML: FleXML is an XML processing language first implemented by Kristofer Rose. Its approach is to add actions to an XML DTD specifying processing instructions for any subset of the DTD's rules. * Scala: Scala is a general-purpose functional and object-oriented language with specific support for XML transformation in the form of XML pattern matching, literals, and expressions, along with standard XML libraries. * LINQ to XML: LINQ to XML is a .NET 3.5 syntax and programming API available in C#, VB and some other .NET languages. LINQ is primarily designed as a query language, but it also supports XML transforms.


See also

*
Filter (software) A filter is a computer program or subroutine to process a stream, producing another stream. While a single filter can be used individually, they are frequently strung together to form a pipeline. Some operating systems such as Unix are rich with f ...
* Filter (Unix) *
Web template A web template system in web publishing allows web designers and developers to work with ''web templates'' to automatically generate custom web pages, such as the results from a search. This reuses static web page elements while defining dynam ...
*
Web template system A web template system in web publishing allows web designers and developers to work with ''web templates'' to automatically generate custom web pages, such as the results from a search. This reuses static web page elements while defining dynami ...
*
Template engine (web) A web template system in web publishing allows web designers and developers to work with ''web templates'' to automatically generate custom web pages, such as the results from a search. This reuses static web page elements while defining dynam ...
* Tritium (programming language)


References

{{DEFAULTSORT:Xml Transformation Language Transformation languages XML-based standards